﻿using System;
using System.Collections.Generic;
using System.Globalization;
using System.Web.UI.WebControls;
using Medianamik.Core;
using Medianamik.Core.Profile;
using Medianamik.Core.Security;
using Medianamik.UI.Lock;

namespace Medianamik.UI.Web.MVP.View
{
    public interface IModuleViewWithRepository : IModuleView
    {
        DateTime? SelectedStartDateTime { get; set; }
        DateTime? SelectedEndDateTime { get; set; }
        IEnumerable<ListItem> Status { get; set; }
        string Keywords { get; set; }
        string ReturnUrl { set; }
        event EventHandler Filter;
        HyperLink AddButton { get; }
        bool EnableDelete { get; }
        void AddTypeSelectorWindow();
        void AddDeleteNodeWindow();
        int PageIndex { get; set; }
        IEnumerable<object> DataSource { set; }
        int PageSize { get; set; }
        string EditReturnUrl { get; set; }
        string EditPageUrl { get;  }
        string RootListingPageUrl { get; }
        string ListingPageUrl { get; }
        int TotalCount { set; }
        bool AllowSorting { get; }
        bool AllowPaging { get; }
        ModuleViewFilters Filters { get; }
        string ChildrenListingPageUrl { get; }
        event EventHandler<NumericalEventArgs> PageIndexChanged;
        event EventHandler<OrderChangedEventArgs> OrderChanged;
        event EventHandler<NumericalEventArgs> PageSizeChanged;
        event EventHandler<IdEventArgs> LockRequestFailed;
        event EventHandler<ActivationStatusChangedEventArgs> ActivationStatusChanged;
        event EventHandler<CultureChangedEventArgs> CultureChanged;
        event EventHandler NodeDeleted;
        //LockInfoToolTip LockInfoTooltip { get; }
        void ShowLockInfoTooltip(Guid nodeId);
        Guid? ParentNodeId { get; set; }
        Guid ModuleNodeId { get; set; }
        Guid BaseTypeId { get; set; }
        bool IsMultiLingual { get; }
        string TypeSelectorUrl { get; }
        CultureInfo CurrentEditionCulture { get; }
        CultureInfo CurrentUICulture { get; }
        MedianamikUser MedianamikUser { get; }
        UserProfile MedianamikUserProfile { get; }
    }
}
